 1.并行执行
   
   Hive的查询通常会被转换成一系列的stage，这些stage之间并不是一直相互依赖的，
可以并行执行这些stage，通过下面的方式进行配置：
   SET hive.exec.parallel=true; -- 默认false
   SET hive.exec.parallel.thread.number=16; -- 默认8
   并行执行可以增加集群资源的利用率，如果集群的资源使用率已经很高了，那么并行
执行的效果不会很明显。
 
 2.推测执行
   
   在分布式集群环境下，因为程序Bug、负载不均衡、资源分布不均等原因，会造成同
一个作业的多个任务之间运行速度不一致，有些任务的运行速度可能明显慢于其他任务
(比如一个作业的某个任务进度只有50%，而其他所有任务已经运行完毕)，则这些任务
会拖慢作业的整体执行进度。
  为了避免这种情况发生，Hadoop采用了推测执行机制，它根据一定的规则推测出
“拖后腿”的任务，并为这样的任务启动一个备份任务，让该任务与原始任务同时处理
同一份数据，并最终选用最先成功运行完成任务的计算结果作为最终结果。
  set mapreduce.map.speculative=true
  set mapreduce.reduce.speculative=true
  set hive.mapred.reduce.tasks.speculative.execution=true
 
 3.合并小文件
   
   在map执行前合并小文件，减少map数
   # 缺省参数
   set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
   在Map-Reduce的任务结束时合并小文件
   # 在 map-only 任务结束时合并小文件，默认true
   SET hive.merge.mapfiles = true;
   # 在 map-reduce 任务结束时合并小文件，默认false
   SET hive.merge.mapredfiles = true;
   # 合并文件的大小，默认256M
   SET hive.merge.size.per.task = 268435456;
   # 当输出文件的平均大小小于该值时，启动一个独立的map-reduce任务进行文件merge
   SET hive.merge.smallfiles.avgsize = 16777216;
 
 4.Fetch模式
   
   Fetch模式是指Hive中对某些情况的查询可以不必使用MapReduce计算。select col1
, col2 from tab ;
   可以简单地读取表对应的存储目录下的文件，然后输出查询结果到控制台。在开启
fetch模式之后，在全局查找、字段查找、limit查找等都不启动 MapReduce 。
   # Default Value: minimal in Hive 0.10.0 through 0.13.1, more in Hive 
0.14.0 and later
   hive.fetch.task.conversion=more
   参数调整：
   1).本地模式
   2).严格模式
   3).JVM重用
   4).并行执行
   5).推测还行
   6).合并小文件
   7).Fetch模式
   Hive 参数说明的官方文档：
   https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties
   